// Learn TypeScript:
//  - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/typescript.html
//  - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/typescript.html
// Learn Attribute:
//  - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html
//  - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
//  - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html
//  - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html

const { ccclass, property } = cc._decorator;

@ccclass
export default class GmboxBannerAd {

    private mBannerAd = null;

    public constructor(adUnitId: string) {
        if (!GmboxBannerAd.isValid()) return;
        this.mBannerAd = gmbox["createBannerAd"]({
            adUnitId: '',
            style: {
                left: -1,
                top: -1
            }
        });
    }

    public static isValid(): boolean {
        if (typeof gmbox != 'undefined' && gmbox["createBannerAd"]) {
            return true;
        }
        return false;
    }

    public show() {
        if (this.mBannerAd == null) return;
        this.mBannerAd.show();
    }

    public hide() {
        if (this.mBannerAd == null) return;
        this.mBannerAd.hide();
    }

    public destroy() {
        if (this.mBannerAd == null) return;
        this.mBannerAd.destroy();
    }

    public onLoad(callback: Function) {
        if (this.mBannerAd == null) return;
        this.mBannerAd.onLoad(callback);
    }

    public onError(callback: Function) {
        if (this.mBannerAd == null) {
            callback({ err: "isNull" })
            return;
        }
        this.mBannerAd.onError(callback);
    }
}
